1. Field of the Invention
The invention relates to a method and apparatus for high performance switching in a network such as token ring, ATM, ethernet, fast ethernet, gigabit ethernet environments, LANs, WANs and other known networking protocols. In particular, the invention relates to a cell switching architecture employed in a network to provide fixed sized cell bursts when the removal of a header having a variable length occurs.
2. Description of the Related Art
As computer performance has increased in recent years, the demands on computer networks has significantly increased; faster computer processors and higher memory capabilities need networks with high bandwidth capabilities to enable high speed transfer of significant amounts of data. The well-known ethernet technology, which is based upon numerous IEEE ethernet standards, is one example of computer networking technology which has been able to be modified and improved to remain a viable computing technology. A more complete discussion of prior art networking systems can be found, for example, in SWITCHED AND FAST ETHERNET, by Breyer and Riley (Ziff-Davis, 1996), and numerous IEEE publications relating to IEEE 802 standards. Based upon the Open Systems Interconnect (OSI) 7-layer reference model, network capabilities have grown through the development of repeaters, bridges, routers, and, more recently, “switches”, which operate with various types of communication media. Thickwire, thinwire, twisted pair, and optical fiber are examples of media which has been used for computer networks. Switches, as they relate to computer networking and to ethernet, are hardware-based devices which control the flow of data packets or cells based upon destination address information which is available in each packet. A properly designed and implemented switch should be capable of receiving a packet and switching the packet to an appropriate output port at what is referred to wirespeed or linespeed, which is the maximum speed capability of the particular network.
A packet is a unit of data that is routed between a source and a destination network over the Internet or any other packet-switched network. When any file (i.e., e-mail message, HTML file, Graphics Interchange Format file, and an Uniform Resource Locator request) is sent from the source to the destination network via the Internet, the Transmission Control Protocol (TCP) layer of the TCP/IP may divide the file into “packets” of an efficient size for routing the data contained in the file. Each of these packets is separately numbered and includes the Internet address of the destination network. The individual packets for the given file may travel different routes through the Internet to reach the destination network. When all the packets have arrived at the destination network, the packets may be reassembled into the original file by the TCP layer at the receiving end of the destination network.
A packet, in general, loosely defines a block of variable-length data. Thus, packet-switching scheme may be an efficient way to handle transmissions on connectionless network such as the Internet. In comparison, a cell, in the network terminology, is a fixed-length of data as opposed to a variable-length of data. Cells are the basic unit of data transport used in protocols, such as ATM (Asychronous Transfer Mode). One advantage of fixed-size cells is that the cells can be switched at a much higher speed than the variable-length sized packets. If all the data contained within the cells received is the same size, a network, which is controlling the flow of the data, can closely estimate the number of data cells that will be transmitted during a transmission interval. Conversely, if the network handles packets of data having variable length, the system cannot accurately predict when the data received into the network will finish exiting the output ports. However, when a network attempts to transmit voice and video data traffic, it is essential that the traffic flow is steady and predictable because this type of traffic is extremely time-sensitive and should avoid any unpredictable transmission delays.
Another concern is that, in a cell-based switch system, the burst size received at the input ports of a network typically determines the data path of the destination network. The burst size is a continuous transfer of data from the source network to the destination network without any interruptions. The size of the burst is often predetermined or programmed by the network designer. Therefore, some network designers may decide to limit the size of the burst of the data packet accordingly.
However, oftentimes, a need may arise for a source network to attach a header during a normal burst transfer to a destination network. If the data path structure of the destination network is programmed to accommodate a specific burst size, it may be difficult for the destination network to handle the extra header bytes. When the data is exchanged from some source networks, there is no assurance that the transmitted data employs the alignment configuration as required by the destination network. Thus, a misalignment predicament may occur and present a problem in the exchange of the data from the source to the destination network. Therefore, with some destination networks, some types of data must be aligned at the memory storage device (buffer memory).
For example, at the receiving side of the destination network, the system may be configured so that a destination network with a backplane interface which supports forty-eight channels to accommodate cells having sixty-four bytes burst. However, the transmitting side of the source network may need to attach a four-byte header to the beginning of the packet. When the cells of the packet arrives at the destination network, the destination network may extract the four-byte header from the cell, thus, leaving sixty bytes in the cell. This header removal step causes the cell to be four bytes short of the required format size since the cell now no longer satisfies the destination network's size requirement of sixty-four bytes. Thus, the cell containing only sixty bytes cannot be sent immediately to the buffer memory. The system must wait for the next cell of the packet for this particular channel to arrive. The system, then, extracts the first four bytes of the next incoming cell, and combines the newly extracted bytes with the sixty bytes of the previous cell. The network then sends the reconstructed cell to the buffer memory. Unfortunately, due to the misalignment of the cell after the removal of the header, the need to reconstruct the cells of the packet perpetuates throughout the transmission of all the subsequent cells of the packet. Namely, the process of extracting, waiting for the next incoming cell and then recombining the data has to be performed on all the remaining cells until the last cell of the packet arrives. One undesirable side effect of this data misalignment is that every channel may have to wait for four more bytes contained within the next incoming cell before the channel can write to the buffer memory. Such a stop-and-start writing process may cause the time interval of writing to the buffer memory to be bursty (some period of no writing and then many successive writes in a short period of time), which may adversely affect the buffer memory arbiter design.